home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / ASSEMBLE / 0572.ZIP / ASMZ80.DOC < prev    next >
Text File  |  1987-04-09  |  13KB  |  284 lines

  1.                          ;ASMZ80 - This is a basic z80 cross assembler which I wrote. The main things
  2.                          ;It dosen't do are:-
  3.                          ;No include files , No macros, output is an intel standard hex file.
  4.                          ;source and output files are in the same directory.
  5.                          ;The thing is fairly bug free, I have actually used it to produce working
  6.                          ;Z80 programs.
  7.                          ;the good things about it are:-
  8.                          ;It uses fairly standard zilog mnemonics, it handles smart typed equates
  9.                          ;you can equate any type of operand.
  10.                          
  11.                          ;most of what you need to know is indicated below, errors are output to the
  12.                          ;screen during assembly, error lines are preceded by a letter or letters
  13.                          ;indicating the error, The ones I remember are given below (gawd what do
  14.                          ;you expect for free? documentation or something?)
  15.                          
  16.                          ;w - general syntax error (WHAT)
  17.                          ;n - instruction error the assembler didn't know the instruction
  18.                          ;b - byte value error (to big, slight bug with -ve numbers, see below)
  19.                          ;r - range error for releative jumps
  20.                          ;p - phasing error the location counter changed between passes - tricky one
  21.                          ;    usually due to defining storage (DEFS) with a value defined later on.
  22.                          ;u - undefined symbol (I think)
  23.                          ;m - multiply defined symbol
  24.                          
  25.                          ;there may be some others aswell!
  26.                          
  27.                          
  28.                          ;invoke assembler like asmz80 [-l] [-n] filename
  29.                          ;file must have .z80 extension
  30.                          ;-l means generate a list file (with .lst extension)
  31.                          ;-n means don't generate a hex file.
  32.                          
  33.                          ; Author Terry Harris....... 1986
  34.                          
  35.                          ;Plough through this lot to understand!
  36.                          
  37.                          ;input can be upper or lower case but case is significant in symbols.
  38.                          ;expression evaluation is always left to right, () can be used to change
  39.                          ;the order (but be careful you don't confuse the assembler about memory
  40.                          ;references e.g.
  41.                          
  42.      0000 3A1900      42         ld a,(3+2)*(3+2)
  43.                          
  44.                          ;try
  45.      0003 3E19        45         ld a,0+(3+2)*(3+2)
  46.                          
  47.                          ;if thats what you mean
  48.                          
  49.                          ;divide is indicated by %
  50.                          
  51.      0005 0A          51         db 100%10
  52.                          
  53.                          ;and unary not by !
  54.                          
  55.      0006 FE          55         db !1
  56.      0007 F0          56         db !0fh
  57.                          
  58.                          ;and and or are & and |
  59.                          
  60.      0008 83          60         db 3|80h
  61.      0009 AA          61         db 0ffh&0aah
  62.                          
  63.                          ;you can do smart equates
  64.                          
  65.      0007             65  tryone equ (IX+7)
  66.      000A DD7E07      66         ld a,tryone
  67.                          
  68.                          ;you can do binary,hex and octal numbers aswell (default is decimal)
  69.                          
  70.      000D AA          70  bin    db 010101010i
  71.      000E 3F          71  oct    db 077q
  72.      000F F0          72  hex    db 0f0h
  73.                          
  74.                          ;the location counter is represented by *
  75.                          
  76.      0010             76  freddy    equ *
  77.                          
  78.      0010 1000        78            dw freddy
  79.                          
  80.      0012             80            ds *%256+1*256-*      ;this put you on the next page boundary
  81.                          
  82.                          ;the only slight bug I know about is using numbers less than -127 as bytes
  83.                          
  84.      0100 82          84         db -126
  85.      0101 81          85         db -127
  86.      0102 80          86         db -128
  87.      0103 7F          87         db -129
  88.                          ;however you can get round it by saying
  89.                          
  90.      0104 7F          90         db -129+256
  91.                          ;No maybe I did get round to fixing this one!
  92.                          
  93.                          ;maybe another slight bug
  94.                          
  95.      0105 61          95         db 'a'
  96.      0106 616263      96         db 'abc'
  97. w    0109 610001      97         db 'a'+1
  98.                          
  99.                          ;arithmetic with ascii constants in DB's don't work
  100.                          
  101.                          ;the only listing control is eject like
  102.      010C            102         eject
  103.                          ; try LIST and NOLIST aswell
  104.                          ;oops forget another one
  105.                          ;
  106.                          ;you can use OFFSET to offset the code in the output file for eprom blowing
  107.      010C            107          OFFSET 4000h       ;the hex file will start 4000h higher than the
  108.      010C            108                             ;real location.
  109.                          
  110.                          
  111.      1234            111         ORG 1234h
  112.      1234            112         ;instructions.
  113.      1234 FD3406     113  START  INC (IY+2*3)
  114.                          ;oops another slight bug the assembler can't tell the following instruction
  115.                          ;is duff
  116.      1237 DD3400     116         inc (IY+IX)
  117.      123A 00         117         NOP
  118.      123B 8F         118         ADC A,A
  119.      123C 8E         119         ADC A,(HL)
  120.      123D 89         120         ADC A,C
  121.      123E 88         121         ADC A,B
  122.      123F CE0C       122         ADC A,12
  123.      1241 ED4A       123         ADC HL,BC
  124.      1243 ED5A       124         ADC HL,DE
  125.      1245 ED6A       125         ADC HL,HL
  126.      1247 ED7A       126         ADC HL,SP
  127.      1249 87         127         ADD A,A
  128.      124A 01D204     128         LD BC,1234
  129.      124D 02         129         LD (BC),A
  130.      124E 03         130         INC BC
  131.      124F 04         131         INC B
  132.      1250 05         132         DEC B
  133.      1251 060C       133         LD B,12
  134.      1253 07         134         RLCA
  135.      1254 08         135         EX AF,AF'
  136.      1255 09         136         ADD HL,BC
  137.      1256 0A         137         LD A,(BC)
  138.      1257 0B         138         DEC BC
  139.      1258 0C         139         INC C
  140.      1259 0D         140         DEC C
  141.      125A 0E0C       141         LD C,12
  142.      125C 0F         142         RRCA
  143.      125D 10FE       143         DJNZ *
  144.      125F 18FE       144         JR *
  145.      1261 28FE       145         JR Z,*
  146.      1263 20FE       146         JR NZ,*
  147.      1265 38FE       147         JR C,*
  148.      1267 30FE       148         JR NC,*
  149.      1269 20FE       149         JR NZ,*
  150.      126B E9         150         JP (HL)
  151.      126C DDE9       151         JP (IX)
  152.      126E FDE9       152         JP (IY)
  153.      1270 DA7012     153         JP C,*
  154.      1273 FA7312     154         JP M,*
  155.      1276 D27612     155         JP NC,*
  156.      1279 C37912     156         JP *
  157.      127C C27C12     157         JP NZ,*
  158.      127F F27F12     158         JP P,*
  159.      1282 EA8212     159         JP PE,*
  160.      1285 E28512     160         JP PO,*
  161.      1288 CA8812     161         JP Z,*
  162.      128B 11D204     162         LD DE,1234
  163.      128E 12         163         LD (DE),A
  164.      128F 13         164         INC DE
  165.      1290 14         165         INC D
  166.      1291 15         166         DEC D
  167.      1292 160C       167         LD D,12
  168.      1294 17         168         RLA
  169.      1295 FDCB055E   169         BIT 3,(IY+5)
  170.      1299 CBA6       170         RES 4,(HL)
  171.      129B DDCB005E   171         BIT 3,(IX+0)
  172.      129F DDCB00DE   172         SET 3,(IX)
  173.      12A3 3AD204     173         LD A,(1234)
  174.      12A6 3E0C       174         LD A,12
  175.      12A8 ED46       175         IM 0
  176.      12AA ED56       176         IM 1
  177.      12AC ED5E       177         IM 2
  178.      12AE C7         178         RST 0
  179.      12AF CF         179         RST 8
  180.      12B0 D7         180         RST 10h
  181.      12B1 DF         181         RST 18h
  182.      12B2 E7         182         RST 20h
  183.      12B3 EF         183         RST 28h
  184.      12B4 F7         184         RST 30h
  185.      12B5 FF         185         RST 38h
  186.      12B6 0601       186         LD B,1
  187.      12B8 3E01       187         LD A,1
  188.      12BA B7         188         OR A
  189.      12BB AF         189         XOR A
  190.      12BC A7         190         AND A
  191.      12BD B0         191         OR B
  192.      12BE 0604       192         LD B,4
  193.      12C0 0622       193         LD B,34
  194.      12C2 14         194         INC D
  195.      12C3 15         195         DEC D
  196.      12C4 160C       196         LD D,12
  197.                          
  198.      0000            198  ATHL   EQU (HL)
  199.      12C6 46         199         LD B,(HL)
  200.      12C7 56         200         LD D,(HL)
  201.      12C8 77         201         LD (HL),A
  202.      12C9 70         202         LD (HL),B
  203.      12CA 70         203         LD ATHL,B
  204.      12CB 3617       204         LD ATHL,23
  205.                          
  206.      12CD 22D204     206         LD (1234),HL
  207.      12D0 CDD012     207  BILL   CALL BILL
  208.      12D3 10FB       208         DJNZ BILL
  209.                          
  210.      12D5 3C         210         INC A
  211.      12D6 04         211         INC B
  212.      12D7 0C         212         INC C
  213.      12D8 14         213         INC D
  214.      12D9 1C         214         INC E
  215.      12DA 24         215         INC H
  216.      12DB 2C         216         INC L
  217.      12DC 03         217         INC BC
  218.      12DD 4F4B2054   218         DB 'OK THEN TEXT ?'
  219.           48454E20
  220.           54455854
  221.           203F
  222.      12EB 13         219         INC DE
  223.      12EC 23         220         INC HL
  224.      12ED 33         221         INC SP
  225.      12EE FD23       222         INC IY
  226.      12F0 DD23       223         INC IX
  227.      12F2 FD3405     224         INC(IY+5)
  228.      12F5 FD34FD     225         INC (IY-3)
  229.      12F8 34         226        INC (HL)
  230.      12F9 FB         227         EI
  231.      12FA F3         228         DI
  232.      12FB C3FB12     229         JP *
  233.      12FE 86         230         ADD a,(HL)
  234.      12FF D9         231         EXX
  235.      1300 EB         232         EX DE,HL
  236.                          
  237.      1301 76         234         HALT
  238.      1302            235         EJECT
  239.                          
  240.      1302            237  FRED   EQU     *
  241.      1302 0213       238         DW     FRED
  242.      1304 0100       239         DW     1
  243.                          
  244.      1306 C30213     241         JP   FRED
  245.      1309 87         242         ADD  A,A
  246.      130A 8F         243         ADC A,A
  247.      130B FD19       244         ADD IY,DE  ;A COMMENT
  248.      130D 87         245         ADD A,A
  249.      130E 80         246         ADD A,B
  250.      130F 81         247         ADD A,C
  251.      1310 82         248         ADD A,D
  252.      1311 83         249         ADD A,E
  253.      1312 84         250         ADD A,H
  254.      1313 85         251         ADD A,L
  255.      1314 E60C       252         AND 12
  256.      1316 E647       253         AND 'G'
  257.      1318 E605       254         AND 05h
  258.                          
  259.      131A CD1A13     256  JIM    CALL JIM
  260.      131D C31A13     257         JP JIM
  261.      1320 C21A13     258         JP NZ,JIM
  262.      1323 1A13       259         DW JIM
  263.      1325 CDD204     260         CALL 1234
  264.                          
  265.      8100            262         org 08100h
  266.      8100 09         263         ADD HL,BC
  267.      8101 29         264         ADD HL,HL
  268.      8102 210281     265         ld hl,*
  269.      8105 87         266         ADD A,A
  270.      8106 C3D204     267         JP 1234
  271.      8109 C30C00     268         JP 12
  272.      810C C30100     269         JP 1
  273.      810F C31000     270         JP 10h
  274.      8112 80         271         ADD A,B
  275.      8113 81         272         ADD A,C
  276.      8114 86         273         ADD a,(HL)
  277.      8115 FD8600     274         ADD a,(IY)
  278.      8118 A0         275         AND B
  279.      8119 CDD204     276         CALL 1234
  280.      811C            277         END START
  281.  
  282.     11 Symbols
  283. 
  284.